A bus is an interconnect subsystem, or circuit, that transfers data between different devices within an electronic circuit. To ensure problem free operation, each bus defines its own set of rules and connections that must be observed by each device connected to the bus. Examples of devices that may be connected to a bus can include, but are not limited to, processors, memories, bridges to external systems, and the like. Unlike a point-to-point connection, a bus can logically connect several peripherals over the same set of wires.
Many electronic systems utilize multiple buses to facilitate data transfer among multiple devices in parallel. When using multiple buses within a single system, it may be necessary to include a mechanism such as a bus bridge or a cross bar to allow data to pass from one bus to another bus. Bus bridges and crossbars, in general, are inter-bus relay mechanisms that facilitate higher throughput than would otherwise be attained.
The rules implemented by each bus of a system ensure that each respective bus functions properly on an individual basis. These same rules, however, can be problematic in an environment where a plurality of buses are coupled through a bus bridge. Situations may arise in which a bus bridge, for example, when trying to allow data to pass from one bus to another, experiences a deadlock condition. A deadlock condition typically arises when implementation of the rules of one bus connected to the bus bridge interfere with implementation of the rules of another bus connected to the bus bridge. The bus bridge becomes deadlocked, preventing any further data from passing from one bus to another.